//
// Created by whg on 2025-06-01.
//

#ifndef PYVM_2025_PY_OBJECT_HPP
#define PYVM_2025_PY_OBJECT_HPP

#include <stdio.h>
#include <assert.h>
#include "klass.hpp"

class PyObject{
private:
    Klass* _klass;

public:
    void setKlass(Klass* klass){
        _klass = klass;
    }
    Klass* klass(){
        assert(_klass != nullptr);
        return _klass;
    }

    void print();

    PyObject* add(PyObject* y);

    PyObject* greater(PyObject* y);
    PyObject* less(PyObject* y);
    PyObject* equal(PyObject* y);

    PyObject* len();
    PyObject* getAttr(PyObject* y);
};

#endif //PYVM_2025_PY_OBJECT_HPP
